# -*- coding: utf-8 -*-
from Tkinter import *
import xmlrpclib
import tkFileDialog
import tkMessageBox
import sys

class Controleur:
    def __init__(self):        
        self.serveur = None #xmlrpclib.ServerProxy(self.nomServeurERP)#('http://localhost:8000')
        #self.BaseDonnees = InterfaceBaseDonnees("Client", self.serveur)
        #self.VuePrincipale = VueEditionTable(None,self)
        self.Connexion = Connexion(self)
        self.Connexion.fenetreConnexion.mainloop()
    def ConnecterServeur(self, nomServeurERP, NomUtilisateur, MotDePasse ):
        print nomServeurERP, NomUtilisateur, MotDePasse
        self.serveur = xmlrpclib.ServerProxy('http://'+nomServeurERP+'.decinfo.cvm:8000')
        self.serveur.RecevoirLogin(NomUtilisateur, MotDePasse)
        
class Connexion(object):
    def __init__(self, parent):
        self.parent = parent
        self.fenetreConnexion=Tk()
        self.fenetreConnexion.geometry("400x200")
        self.fenetreConnexion.config(bg='#6B979C')
        self.fenetreConnexion.title("PERP - Connexion")
        self.fenetreConnexion.resizable(0,0)
        #self.fenetreConnexionServeur="" # Définir une variable serveurDefault
        #self.fenetreConnexionNomUtilisateur=""
        #self.fenetreConnexionMotPasse=""
       # self.fenetreConnexion.iconbitmap('PERP.ico')
        self.centreFenetre(self.fenetreConnexion)
        # CREATION DU CADRE
        canevas=Canvas(self.fenetreConnexion,width=400, relief=SUNKEN,height=200, bg="#6B979C")
        canevas.pack()
        canevas.create_rectangle((20,30,380,150),outline="#E1E6FA")
        # LISTE DES NOMS UTILISATEURS
        self.listeUtilisateur=["Mohamed","Jamal","Mathieu","Daniel","Erna","Mounia"]
        # LISTE DES MOTS DE PASEE DES UTILISATEURS
        self.listeMotPasse=["moh","jam","mat","dan","ern","mou"]
        # MOT DE PASSE ADMINISTRATEUR
        self.motPasseAdministrateur="admin"
        self.nomServeurERP="407vista16"
        self.nomServeurOracle="titan"
        # CHAMP POUR SAISIR LE NOM DU SERVEUR ERP
        text1=Label(self.fenetreConnexion,text="Connexion au Serveur PERP",bg='#6B979C').place(x=50,y=45 )
        self.variableServeur=StringVar()
        self.fenetreConnexion.entry = Entry(self.fenetreConnexion, textvariable=self.variableServeur,width=20,bg='#F7F2B2').place(x=190,y=45)
        # CHAMP POUR SAISIR L'USERNAME DE L'UTILISATEUR
        text2=Label(self.fenetreConnexion,text="Nom de l'Utilisateur",bg='#6B979C').place(x=50,y=90 )
        self.variableNomUtilisateur=StringVar()
        self.fenetreConnexion.entry = Entry(self.fenetreConnexion, textvariable=self.variableNomUtilisateur,width=30,bg='#F7F2B2').place(x=170,y=90)
        # CHAMP POUR SAISIR LE MOT DE PASSE
        text3=Label(self.fenetreConnexion,text="Mot de passe",bg='#6B979C').place(x=50,y=120 )
        self.variableMotPasse=StringVar()
        self.fenetreConnexion.entry = Entry(self.fenetreConnexion, textvariable=self.variableMotPasse,show="*",width=30,bg='#F7F2B2').place(x=170,y=120)
        # BOUTONS POUR CONFIRMER OU POUR ABANDONNER
        self.BoutonOK=Button(self.fenetreConnexion,text="OK",width=12,bg='#046380',fg="white", command=self.OKConnexionERP).place(x=195,y=160)
        self.BoutonAnnuler=Button(self.fenetreConnexion,text="Annuler",width=12,bg='#046380',fg="white",command=self.QuitterERP).place(x=285,y=160)

    def centreFenetre(self,fenetre):
        fenetre.update_idletasks()
        geo=fenetre.geometry()
        x=geo.find('x',0)
        tx=geo[0:x]
        y=geo.find('+',x+1)
        ty=geo[x+1:y]
        xecran=fenetre.winfo_screenwidth()
        yecran=fenetre.winfo_screenheight()
        x0=(xecran-int(tx))//2
        y0=(yecran-int(ty))//2
        fenetre.geometry("+" + str(x0) + "+" + str(y0))
        
    def OKConnexionERP(self):
        #self.nomServeurERP = 'http://localhost:8000'
        #self.nomServeurERP=StringVar()
        #self.nomServeurERP.set("http://localhost:8000")       
        if self.variableServeur.get() == self.nomServeurERP:
            for i in range(6):
                if self.variableNomUtilisateur.get()==self.listeUtilisateur[i] and \
                    self.variableMotPasse.get()==self.listeMotPasse[i]:                        
                        #self.serveur = Serveur(self.nomServeurERP)
                        self.parent.Connexion
                        self.variableNomUtilisateur.set('OK Authentifié')
                        self.parent.ConnecterServeur(self.variableServeur.get(),self.variableNomUtilisateur.get(), self.variableMotPasse.get() )
                        break
                elif (i>=5): # pour afficher le message d'erreur une fois la liste parcorue
                    text=Label(self.fenetreConnexion,text="ATTENTION!... Nom de l'utilisateur ou mot de passe non valide " +self.variableServeur.get()+" n'a été trouvé.",bg='#6B979C',fg="white").place(x=50,y=70 )                    
        else:
            text=Label(self.fenetreConnexion,text="ATTENTION!... Aucun Serveur nommé" +self.variableServeur.get()+" n'a été trouvé.",bg='#6B979C',fg="white").place(x=50,y=70 )
            self.variableMotPasse.set('')
            self.variableNomUtilisateur.set('')
        
#    def OKConnexionERP(self):
#        if self.variableServeur.get()==self.nomServeurERP:
#            for i in range(6):
#                if self.variableNomUtilisateur.get()==self.listeUtilisateur[i]:
#                    if self.variableMotPasse.get()==self.listeMotPasse[i]:
#                        self.fenetreConnexion.destroy()
#                else:
#                    text=Label(self.fenetreConnexion,text="ATTENTION!... le nom d'utilisateur ou le mot de passe est invalide",bg='#6B979C',fg="white").place(x=50,y=70 )
#                    self.fenetreConnexion.entry = Entry(self.fenetreConnexion, width=30,bg='#F7F2B2').place(x=170,y=120)
#        else:
#            text=Label(self.fenetreConnexion,text="ATTENTION!... Aucun Serveur nomme " +self.variableServeur.get()+" n'a ete trouve",bg='#6B979C',fg="white").place(x=50,y=70 )
#            self.fenetreConnexion.entry = Entry(self.fenetreConnexion, width=30,bg='#F7F2B2').place(x=170,y=120)
            
    def QuitterERP(self):
        if tkMessageBox.askokcancel("Attention", "Vous annulez l'ouverture de session."):
            self.fenetreConnexion.destroy()


if __name__ == '__main__':
    Controleur = Controleur()
    #Client2=Connexion()
    

